package com.ilide.msgManage.utils;

import lombok.Builder;
import lombok.Builder.Default;
import lombok.Data;

/**
 * 公用返回结果实体
 *
 * @author pg
 * @date 2020年3月20日 10:18:58
 */
@Builder
@Data
public class WebResult {
    @Default
    private int code = -1;
    private String msg;
    private Object data;

    public static WebResult ok() {
        return new WebResultBuilder().code(Type.OK.value).msg("成功").build();
    }

    public static WebResult ok(Object data) {
        return new WebResultBuilder().code(Type.OK.value).msg("成功").data(data).build();
    }

    public static WebResult ok(String message, Object data) {
        return new WebResultBuilder().code(Type.OK.value).msg(message).data(data).build();
    }

    public static WebResult wrong(String message) {
        return new WebResultBuilder().code(Type.WRONG.value).msg(message).build();
    }

    public static WebResult wrong(Object data) {
        return new WebResultBuilder().code(Type.WRONG.value).msg("请求失败！").data(data).build();
    }

    public static WebResult wrong(String message, Object data) {
        return new WebResultBuilder().code(Type.WRONG.value).msg(message).data(data).build();
    }


    public String toJson() {
        return GsonUtil.toJson(this);
    }

    /**
     * 状态类型
     */
    public enum Type {
        /**
         * 成功
         */
        OK(0),
        /**
         * 失败
         */
        WRONG(-1);

        private final int value;

        Type(int value) {
            this.value = value;
        }

        public int value() {
            return this.value;
        }
    }
}
